At developerWorks, we believe that social computing, Web 2.0, and online communities will have as revolutionary an impact on businesses, projects, industries, and even development methods as the Internet, or the open source movement did. The challenge for many sites like developerWorks, which has grown organically for many years, is unifying existing community services and social networking tools.
To this end, the developerWorks spaces system was born: a place where you can engage with the like-minded, or even create your own community courtesy of developerWorks. You can start exploring our 13 inaugural community topics spaces now -- and read on for perspective and insight into the project and to find out how you can participate.
Figure 1. The new community topics area on developerWorks
Today, developerWorks' community services, implemented with such tools as wikis, podcasts, blogs, and forums, comprise almost a third of all developerWorks page views. Thus far, the overall developerWorks community has been segmented into multiple sub-communities around various technologies (for example, Java™, Linux®), product brands (for example, WebSphere®, Rational®), and products (Rational Application Developer, Lotus® Sametime). Hosting these services requires a complex mix of UI engineering, multiple application integration, XML templates, authentication integration, metrics integration, administration, and business processes.
The spaces concept arose from the need for a better and more holistic way to engage with our community. From an infrastructure standpoint, each new community tool added another level of complexity for integration issues. From the user's standpoint, the multiple tools were artificially segregating the community by type of community service (for example, forum users, blog readers, podcast listeners, and so on) and dispersing the information into multiple areas users needed to keep track of.
For a site that hopes to bridge many different types of developer roles, industries, technologies, products, and geographies, anything that separates users in communities is counterproductive.
Beyond the ability to combine different tools, resources, and people together, we wanted to add more dynamic interfaces, controls, and richer applications to make it easier to interact. We also wanted to change the model for who "owns" content, allowing a spectrum, ranging from areas that are run solely by IBM employees, to some mix of IBM employees and community members, to areas run solely by community members. Finally, we wanted to make it possible for individuals to do this quickly and nimbly, without friction or overhead.
This idea of mashing together different members, owners, content, interfaces, resources, and tools on an as-needed basis for each community is what the Web 2.0 movement is all about. What we needed was a way to consider communities from a unified viewpoint and to provide a way to implement this in a simple and intuitive manner. To this end, we emerged with the concept of community models and the developerWorks spaces system.
A community model is a strategy for how you want to work with others, and this forms the basis of our approach. Defining this model is the necessary intermediary step between the concept stage and implementation stage.
Key ideas to an online community model are:
- a membership, that may be identified, or may be anonymous, and can be of any size from a few folks, to a small team of a few dozen people, to a large-scale group of millions
- identified leaders of the community
- an organizing idea, topic, practice, activity, or program for the community
- a virtual place where the community "gathers"
- information resources shared by the leaders or the members in this place, from any source they consider useful
- tools for the members to interact, collaborate, comment, share, and exchange with each other
- tools to understand how the community is faring -- metrics such as number of posts, page views, unique visitors, and so on
- tools, resources, or processes to understand, use, manage, or support all of this
This is a fairly broad definition that you'll find allows almost an unlimited number and variety of community models. In fact the description above is a meta-model to help define more specific implementation models that are of practical use.
For example, you and a few friends -- who are spread apart around the world -- start a small software project. Initially your team just needs a space to share files and perhaps share some sites and other Internet resources. As it grows, you realize you need to develop documentation for the project and open it up for others to access. As you grow further, you might want to start a blog to keep users up to date and a discussion forum for them to exchange ideas and issues. All of this needs to happen on an Internet scale and grow with your project. This constitutes one common type of community model for a software project team.
Another model is a space built around an individual. It contains a blog and links to resources and simple Web applications. It might also contain a file sharing system for podcasts, videos, or other files. As the space grows and increases in popularity, it might need a wiki to document FAQs from followers.
A product manager, interested in working with his or her product user community to determine what the next generation product should look like, might design a community model around gathering user requirements. One of the technical leads can blog about the project, sharing thoughts and asking for feedback. Once a list of possible new features has been identified, users can then discuss or rate them.
Or a teacher might need a space for the class notes, syllabus, assignments, shared files, and documents he or she wants to share with the class, as well as the interaction tools for the students to communicate with each other. It might be necessary to restrict access to some of this information only to the class, while sharing other aspects of the course with anyone who is interested.
These four examples are only a handful of the use cases that we modeled as we developed the spaces concept. The real value of spaces is to save people the time and effort of reinventing the community models over and over again. From a developer's view, community models are very much like software patterns for community managers.
Once the community model is identified, spaces provide a practical way to implement the model quickly and easily, and without requiring developer resources.
Spaces are meant to support a variety of community models, as shown in Figure 2. Starting at the base, the Feed & data layer brings together data from different sources across the Internet encapsulated in a way that can be brought up in higher layers.
Figure 2. The developerWorks spaces architecture model
The Content & application layer houses specific social networking tools. Since we need a flexible framework that will allow new tools to be added over time, we separate this out. Aside from the social networking applications that create leaf items of content, there are Common services that interact with these applications. Some social networking applications implement these services within themselves; however, to allow better integration between, for example, a tag in a blog and a label in a wiki, the better approach is to separate it out into a higher layer that aggregates both of these tags. Other services commonly needed are a ratings mechanism across different content items and applications, or a common system for comments, so you can find all of the comments (rather than digging through different tools for them).
Above the Content & application layer are the Portlets that display the information visually. Each of these shows a particular type of content, or a particular social networking application. This is where you will see the most variety and eventually a way for you to develop your own portlets. A generous helping of Ajax makes it easy to arrange or rearrange the portlets onto the page as you think is best.
Above the Presentation layer, you define who can access this information, or who can actually modify the content of the portlets. You can set as many people as you want to be able to edit and own the elements of the space. Finally, you can share this information through our Web site, or distribute to other sites through RSS Web feeds.
The implementation we created is much simpler to understand and use than the architectural model might imply. We created the developerWorks spaces system to make it easy to integrate the online site and pick the social networking tools for your community. All you need to build a space is your community model and a browser with JavaScript support.
Figure 3 gives a snapshot of what our space builder is like. As the owner or editor of a space, you can drag any of the portlets shown in the menu on the left, and drop them into a spot in the columns. A dialog box then appears where you enter information about the title, URL, and any particulars to access that data or social networking tool. You can drag-and-move the portlets around the space as well, adjusting their relative position on this dynamic Web page. You can adjust the number of columns visible and the color schemes for the space. No HTML required.
Figure 3. The developerWorks space builder tool
When you are ready with a completed design, all you have to do to push the page live is to click on the Publish button. You can see a good example in the IBM Emerging Internet Technologies team's Mashups space (see Figure 4). The space pulls together a number of resources from different social networking tools of the team's own as well as other Internet resources.
Figure 4. The Mashups space
With the preview release in April 2007, we have 13 new spaces launched on a variety of topics from Ajax to Software as a Service. These spaces are listed on our index of all spaces.
More features and capabilities will be added to complete the architectural model described above. You can find out more on what you can do with a space, and what tools are available in the FAQ (see Resources).
If this is your first encounter with a developerWorks tutorial that includes demos, here are a few things you might want to know:
Demos are an optional way to see the same steps described in the article. To see an animated demo, click the Show me link. The demo opens in a new browser window. Each demo contains a navigation bar at the bottom of the screen. Use the navigation bar to to pause, exit, rewind, or fast forward portions of the demo. You may need to scroll to see some areas of the demo. JavaScript must be enabled in your browser and Macromedia Flash Player 6 or higher must be installed.
Download Adobe Flash Player.
Learn
- The Forrester Research report, "Social Technographics," explains how companies pursuing social technologies should analyze their customers' social computing behaviors and create a strategy based on this profile.
- See an index of all spaces to date.
- This
interactive tour shows you the basic steps involved in creating a space on developerWorks (Adobe Flash Player required.).
- Watch this video for an overview of developerWorks' community offerings, including the new community topic spaces (Adobe Flash Player required.).
- Got questions about developerWorks spaces? Check out our spaces FAQs.
- developerWorks is now accepting applications for space ownership. If you and at least one other person have an idea for a space that's of interest to the developer community, please fill out our application and we'll be in touch.
-
Spaces are just one more reason to visit
developerWorks, recipient of the 2007 Jolt Hall of Fame award.
-
Get your hands on more Web development articles from the Web
zone's technical library.
-
Subscribe
to the developerWorks Web development newsletter.
Get products and technologies
-
Download IBM
product evaluation versions.
Discuss
- Participate in the discussion forum.
-
Get involved in the developerWorks community:
blogs,
forums, and so
much more.
Rawn Shah is developerWorks' Community Program Manager focusing on how to develop greater interaction between our members through the many community services we have such as blogs, forums, user groups, wikis and other services. He's been a network administrator, a systems programmer, a Web project manager, an author, a technology writer and editor. He survived the dotcom days in his own startup before becoming a full-time writer and later joining IBM as an editor. In his spare time, he is also a student and teacher of Japanese swordfighting.
Jeanette Fuccella is one of the Web site strategists for developerWorks, focused primarily on finding ways to provide a more dynamic and interactive experience through the site. Her background is in human factors, user research, and Web site design. She spends her spare time gardening with her three-year-old son, Tommy.
Comments (Undergoing maintenance)





